JavaScript匿名类整理

您所在的位置:网站首页 js 匿名类 JavaScript匿名类整理

JavaScript匿名类整理

2023-09-25 11:29| 来源: 网络整理| 查看: 265

以下为总结在开源的JavaScript框架中能看到很多这样语法结构(function(){})()比如我最近看的jQuery,及chediter。刚开始的时候我看到这样的结果有点奇怪,它是怎么执行的,并且这是什么样的语法结构,最近偶尔看闭包的时候,才发现原来这是JavaScript种匿名函数(看到这个有点汗,java的匿名类见过,就从来没想到JavaScript中会有匿名函数,也是学的不够牢固)。现在我们了解到以上是JavaScript匿名函数的语法结构,怎么声明函数,匿名函数JavaScript是怎么执行的,匿名函数的代码模式。这些问题

就是我们接下来要探讨的问题。第一:怎么声明函数。方法一  function functionName( arguments ){ body }在JavaScript函数典型函数,也叫有名函数(因为它存在functionName)。function fun(){ alert( "test" ) }//  1fun();//2第1行这是JavaScript声明有名函数最常见的方法,也是我们个人开发中最常用的声明方式。该语法结构为声明一个名叫fun的函数(注意JavaScript只会编译该函数,并生成fun函数的对象,不会执行该函数)。而第二句为调用该函数即执行该函数。方法二 var fun = function ( arguments  ){ body  } //又称函数字面量var fun = function( ){ alert( "test" ) }该函数复制给变量fun,其实后面的函数为一个匿名函数方法三 var fun=new Function([arguments], Body);将函数复制给变量fun注意该种方式会存在性能问题,在执行 new Function方法时它不是静态编译和执行,而是动态编译和执行,即当执行new Function时才编译函数主体,并生成函数对象,每调用一次就执行编译及执行的过程【类似于函数eval()】,它比其他方是多了编译过程【会使用浏览器的编译器

】,如果再循环体中执行效率会比较低;上面三种定义函数方式中,后两种方式是采用匿名函数的方式什么的变量。第二:匿名函数是怎样执行的。对于语法结构

(function(){ alert( "test" ); } )()

 

其实是由两部分组成(function(){    alert( "test" );})表示的为匿名函数的定义。而对于接在后面的"()"代表的意思为执行定义的匿名函数。上述的语法结构也等价于以下的语法结构

var test=function(){ alert( "test" ); //函数内容 };//声明匿名类并将匿名函数赋予变量test。 test();//执行test

 

可以看出匿名类可以直接在类后面接()代表执行,这也是我们在jQuery等开源的框架时,导入相应的包以后就可以直接使用对象的原因。它已经在匿名函数中完成相应的初始化及封装。知道匿名类是怎么执行的,那我们常用的匿名函数有哪些呢。第三:匿名函数调的代码模式hedger wang介绍了几种匿名函数的代码模式:错误模式:其无法工作,浏览器会报语法错。

function(){ alert(1); }();

 

以上错误原因是()能更改表达式的优先级,使用()后,将先执行()里面的代码,而对于表达式()对于JavaScript编译不过去的。函数字面量:首先声明一个函数对象,然后执行它。 也称为立即执行函数。

(function(){ alert(1); } ) ( );

 

编译一定能通过,第一()是函数定义,而第二个()代表执行第一括号里面的内容优先表达式:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。

( function(){ alert(1); } ( ) );

 Void操作符:用void操作符去执行一个没有用圆括号包围的一个单独操作数。

void function(){ alert(1); }()

 

这三种方式是等同的,hedger wang因为个人原因比较喜欢第3种,而在实际应用中我看到的和使用的都是第1种以及上面提到的 new Funtion( )的定义方式。

     灵活的配合var关键字,匿名函数可以有效的保证在页面上写入Javascript,而不会造成全局变量的污染。也能增加代码的可读写行,减少代码量,提高程序的性能。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3